// Name: HTMLEditor.DesignPanelEventHandler.debug.js
// Assembly: AjaxControlToolkit
// Version: 3.5.7.1213
// FileVersion: 3.5.7.1213
Type.registerNamespace("Sys.Extended.UI.HTMLEditor");
Sys.Extended.UI.HTMLEditor.DesignPanelEventHandler = function(ev) {
try {
var editor = this;
if (editor._editPanel != Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
return true;
}
if (Sys.Extended.UI.HTMLEditor.isIE) {
try {
var selka = this._doc.selection;
var rrr = this._createRange(selka);
} catch (e) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
if (ev.type == "mousedown" || ev.type == "dblclick") {
this._focus(true);
}
if (!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown" && ev.keyCode == Sys.UI.Key.tab && this._editPanel.get_suppressTabInDesignMode()) {
Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel = null;
return true;
}
if (this.isPopup()) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
var contextMenuRemoved = false;
if (editor._contextElement && editor._contextElement != null) {
Function.createDelegate(this, Sys.Extended.UI.HTMLEditor.RemoveContextMenu)();
if (ev.type == "keydown" || ev.type == "keypress") {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return;
}
contextMenuRemoved = true;
}
if (typeof editor.captureInDesign == "function") {
if (editor.captureInDesign(ev) === false) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return;
}
}
if (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "mousedown" && ev.ctrlKey) {
var sel = editor._getSelection();
var savedX = ev.clientX;
var savedY = ev.clientY;
setTimeout(function() {
var sel = editor._getSelection();
if (sel.type.toLowerCase() != "control") {
var range = editor._doc.body.createTextRange();
range.moveToPoint(savedX, savedY);
range.select();
}
sel = editor._getSelection();
var range = editor._createRange(sel);
var parent = Sys.Extended.UI.HTMLEditor.getSelParent(editor);
while (parent != null && parent.tagName.toUpperCase() != "BODY") {
if (parent.tagName.toUpperCase() == "A" && parent.href != null && typeof parent.href != "undefined" && parent.href.length > 0) {
window.open(parent.href, "LinkViewWindow");
break;
}
parent = parent.parentNode;
}
}, 0);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
var el = (!Sys.Extended.UI.HTMLEditor.isIE) ? ev.target : ev.srcElement;
if (el.tagName != null && typeof el.tagName != "undefined" && (el.tagName.toUpperCase() == "HTML" || el.tagName.toUpperCase() == "BODY")) {
if (editor.__kkoka != true) {
editor.__kkoka = true;
setTimeout(function() {
if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
if (!editor.toEndOfProtected()) {
try {
editor.focusEditor();
} catch (ex) { }
}
}
editor.__kkoka = false;
}, 0);
}
}
else {
if (Sys.Extended.UI.HTMLEditor.contentEditable(el) != null) {
setTimeout(function() {
if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
editor.toEndOfProtected();
}
}, 0);
}
}
if (contextMenuRemoved && (Sys.Extended.UI.HTMLEditor.isIE)) {
var sss = this._getSelection();
var rrr;
try {
rrr = this._createRange(sss);
if (sss.type.toLowerCase() == "control") {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
} catch (ex) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
var keyEvent = (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown") || (ev.type == "keypress");
var rere = ev.type + "--" + keyEvent;
if (keyEvent && !this._editPanel.get_keyboardEnabled()) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
var key = String.fromCharCode(Sys.Extended.UI.HTMLEditor.isIE ? ev.keyCode : ev.charCode).toLowerCase(); ;
if (keyEvent && editor._editPanel.get_hotkeys() != null) {
if (editor._editPanel.get_hotkeys().length > 0) {
var keysn = editor._editPanel.get_hotkeys().length;
var cake = key;
if (ev.keyCode == 18 || ev.keyCode == 17 || ev.keyCode == 16) {
cake = null;
}
for (var i = 0; i < keysn; i++) {
var item = editor._editPanel.get_hotkeys()[i];
if (item[1] == cake && item[2] == ev.altKey && item[3] == ev.shiftKey && item[4] == ev.ctrlKey) {
if (typeof item[0] == "function") {
setTimeout(function() {
(item[0])(editor);
editor.onContentChanged();
editor.focusEditor();
}, 0);
}
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
}
}
if (keyEvent && ev.shiftKey && ev.keyCode == 45) {
this._commonPaste(ev);
} else {
if (keyEvent && ev.ctrlKey && ev.altKey && ev.keyCode == Sys.UI.Key.home) {
var prot = null;
var el = Sys.Extended.UI.HTMLEditor.getSelParent(editor);
while (el && (el.nodeType == 3 || (el.tagName && el.tagName.toUpperCase() != "BODY"))) {
if (el.nodeType == 3 || !el.tagName) {
el = el.parentNode;
continue;
}
var tagName = el.tagName.toUpperCase();
if (!Sys.Extended.UI.HTMLEditor.canBeInsideP(el) && tagName != "P") {
if (tagName == "TD") {
while (tagName != "TABLE") {
el = el.parentNode;
tagName = el.tagName.toUpperCase();
}
} else {
if (tagName == "LI") {
while (tagName != "OL" && tagName != "UL") {
el = el.parentNode;
tagName = el.tagName.toUpperCase();
}
}
}
prot = el;
break;
}
el = el.parentNode;
}
if (prot != null) {
var sel = editor._getSelection();
var range = editor._createRange(sel);
var tempText = editor._doc.createTextNode("");
prot.parentNode.insertBefore(tempText, prot);
if (Sys.Extended.UI.HTMLEditor.isIE) {
var range1 = editor._createRange(sel);
var range2 = editor._createRange(sel);
var span1 = editor._doc.createElement("span");
var span2 = editor._doc.createElement("span");
tempText.parentNode.insertBefore(span1, tempText);
if (tempText.nextSibling) {
tempText.parentNode.insertBefore(span2, tempText.nextSibling);
} else {
tempText.parentNode.appendChild(span2);
}
try {
range1.moveToElementText(span1);
range2.moveToElementText(span2);
range1.setEndPoint("EndToEnd", range2);
range1.select();
} catch (e) { }
tempText.parentNode.removeChild(span1);
tempText.parentNode.removeChild(span2);
} else {
editor._removeAllRanges(sel);
range.setStart(tempText, 0);
range.setEnd(tempText, 0);
editor._selectRange(sel, range);
}
}
}
else
if (Sys.Extended.UI.HTMLEditor.isIE && ev.keyCode >= 33 && ev.keyCode <= 40 && !ev.shiftKey) {
var after_pos = (ev.keyCode == Sys.UI.Key.pageDown || ev.keyCode == Sys.UI.Key.end || ev.keyCode == Sys.UI.Key.right || ev.keyCode == Sys.UI.Key.down);
setTimeout(function() {
var sel = editor._getSelection();
var range = editor._createRange(sel);
if (sel.type.toLowerCase() == "control") {
var el = range.item(0);
if (!el.contentEditable || el.contentEditable == "false") {
range.remove(0);
sel.empty();
range = editor._createRange(sel);
var span = editor._doc.createElement("SPAN");
span.appendChild(editor._doc.createTextNode(""));
if (after_pos) {
if (el.nextSibling == null)
el.parentNode.appendChild(span);
else
el.parentNode.insertBefore(span, el.nextSibling);
} else {
el.parentNode.insertBefore(span, el);
}
range.moveToElementText(span);
range.select();
setTimeout(function() {
editor.focusEditor();
span.parentNode.removeChild(span);
}, 0);
}
}
}, 0);
}
else
if (((keyEvent && !Sys.Extended.UI.HTMLEditor.isSafari) || (Sys.Extended.UI.HTMLEditor.isSafari && ev.type == "keydown")) && ev.ctrlKey && !ev.altKey) {
editor._a_prize = false;
var sel = null;
var range = null;
var key = String.fromCharCode((Sys.Extended.UI.HTMLEditor.isIE || Sys.Extended.UI.HTMLEditor.isOpera || Sys.Extended.UI.HTMLEditor.isSafari) ? ev.keyCode : ev.charCode).toLowerCase();
var cmd = null;
var value = null;
if ((Sys.Extended.UI.HTMLEditor.isIE || Sys.Extended.UI.HTMLEditor.isSafari) && ev.keyCode == 17) { // Ctrl
return false;
}
else
if (!Sys.Extended.UI.HTMLEditor.isIE && ev.keyCode == Sys.UI.Key.end && !ev.shiftKey) {
editor._setToEnd();
}
else
if (ev.keyCode == 46 && this.isShadowed()) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
else
if (ev.keyCode == 46 || ev.keyCode == Sys.UI.Key.backspace) {
if ((Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown") || (!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress"))
this._saveContent();
}
else {
switch (key) {
case "a":
if (!Sys.Extended.UI.HTMLEditor.isIE) {
sel = this._getSelection();
this._removeAllRanges(sel);
range = this._createRange();
range.selectNodeContents(this._doc.body);
this._selectRange(sel, range);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
} else {
editor._a_prize = true;
}
break;
case "z":
this.undo();
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
break;
case "p":
if (!Sys.Extended.UI.HTMLEditor.isIE) {
setTimeout(function() {
editor._contextMenuCallP();
}, 0);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
break;
case "y":
this.redo();
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
break;
case "x":
if (this.isShadowed()) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
this._saveContent();
if (Sys.Extended.UI.HTMLEditor.isIE) {
if (ev.type == "keydown") {
editor.openWait();
setTimeout(function() {
editor._copyCut(key, false);
editor.closeWait();
}, 0);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
break;
case "c":
if (this.isShadowed()) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
if (Sys.Extended.UI.HTMLEditor.isIE) {
if (ev.type == "keydown") {
editor.openWait();
setTimeout(function() {
editor._copyCut(key, false);
editor.closeWait();
setTimeout(function() {
editor._ifShadow();
}, 0);
}, 0);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
break;
case "v":
if (this.isShadowed()) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
if (Sys.Extended.UI.HTMLEditor.isIE) {
this._saveContent();
return true;
}
this._commonPaste(ev);
break;
case "b": // KEY bold
this._execCommand("bold", false, value);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
case "i": // KEY italic
this._execCommand("italic", false, value);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
case "u": // KEY underline
this._execCommand("underline", false, value);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
case "s": // KEY strike through
this._execCommand("strikethrough", false, value);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
case "l": // KEY justify left
cmd = "justifyleft";
break;
case "e": // KEY justify center
cmd = "justifycenter";
break;
case "r": // KEY justify right
cmd = "justifyright";
break;
case "j": // KEY justify full
cmd = "justifyfull";
break;
case "q": // test KEY
alert(this._doc.body.innerHTML);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
break;
case "0": // test KEY
var str1 = "Your browser:\n\n" + navigator.userAgent;
alert(str1);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
break;
case "9":
if (!Sys.Extended.UI.HTMLEditor.isIE) {
var sel = editor._getSelection();
var range = editor._createRange(sel);
var p1 = range.startContainer;
var p2 = range.endContainer;
var Str = "";
Str += "startContainer: " + (p1.nodeType == 1 ? p1.tagName : "text") + "\n";
Str += "endContainer : " + (p2.nodeType == 1 ? p2.tagName : "text") + "\n";
if (p1 == p2) {
Str += "startOffset: " + range.startOffset + "\n";
Str += "endOffset : " + range.endOffset + "\n";
if (p1.nodeType == 1) {
p1 = p1.childNodes.item(range.startOffset);
if (p1 && p1.nodeType) {
Str += "startOffset node: " + (p1.nodeType == 1 ? p1.tagName : "text") + "\n";
if (range.startOffset != range.endOffset) {
p1 = p2.childNodes.item(range.endOffset);
if (p1 && p1.nodeType) {
Str += "endOffset node: " + (p1.nodeType == 1 ? p1.tagName : "text") + "\n";
}
}
} else {
Str += p1;
}
}
}
alert(Str);
} else {
var sel = editor._getSelection();
var range = editor._createRange(sel);
alert("boundingLeft: " + range.boundingLeft + " boundingTop: " + range.boundingTop + "\n" + "boundingWidth: " + range.boundingWidth + " boundingHeight: " + range.boundingHeight);
}
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
break;
}
}
if (cmd) {
this._execCommand(cmd, false, value);
if (cmd == "formatblock" && !Sys.Extended.UI.HTMLEditor.isIE) {
this._saveContent();
this._undo(false);
}
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
if (cmd == "delete" || cmd == "paste") {
this._clearP();
}
}
}
else
if (keyEvent || ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type == "keydown")) {
if (Sys.Extended.UI.HTMLEditor.isIE && this._tryForward) {
var range = this._createRange(this._getSelection());
range.select();
this._tryForward = false;
}
var key = String.fromCharCode(Sys.Extended.UI.HTMLEditor.isIE ? ev.keyCode : ev.charCode).toLowerCase();
if (editor._a_prize) {
editor._a_prize = false;
function test_a() {
var r = editor._createRange(editor._getSelection());
var parent = r.parentElement();
if (parent && parent.nodeType == 1 && parent.tagName.toUpperCase() == "P") {
while (parent.firstChild) {
parent.parentNode.insertBefore(parent.firstChild, parent);
}
parent.parentNode.removeChild(parent);
}
}
setTimeout(test_a, 0);
}
if (this.isShadowed()) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
switch (ev.keyCode) {
case Sys.UI.Key.tab:
if ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type != "keydown") break;
if (!this._editPanel.get_suppressTabInDesignMode()) {
if (!this.isControl())
this.insertHTML(" ");
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
}
else {
if (Sys.Extended.UI.HTMLEditor.isSafari) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
}
Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel = null;
return true;
}
break;
case 46: case Sys.UI.Key.backspace:
if ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type != "keydown") break;
if (((Sys.Extended.UI.HTMLEditor.isIE || Sys.Extended.UI.HTMLEditor.isSafari) && ev.type == "keydown") || (!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress")) {
this._saveContent();
}
if (!Sys.Extended.UI.HTMLEditor.isIE) {
var range = this._createRange(this._getSelection());
var p1 = range.startContainer;
var p2 = range.endContainer;
if (ev.type == "keypress") {
if (Sys.Extended.UI.HTMLEditor.contentEditable(p1) != null || Sys.Extended.UI.HTMLEditor.contentEditable(p2) != null) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
if (p1 == p2 && p1.nodeType == 1 && p1.tagName.toUpperCase() == "TD" && range.startOffset == range.startOffset && p1.childNodes.item(range.startOffset) && p1.childNodes.item(range.startOffset).tagName && p1.childNodes.item(range.startOffset).tagName.toUpperCase() == "BR") {
var span = p1.childNodes.item(range.startOffset);
var left = 0, right = 0;
var nb;
nb = span.previousSibling;
while (nb) {
left++;
nb = nb.previousSibling;
}
nb = span.nextSibling;
while (nb) {
right++;
nb = nb.nextSibling;
}
if ((ev.keyCode == 46 && right == 0) || (ev.keyCode == Sys.UI.Key.backspace && left == 0)) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
} else {
if (ev.keyCode == 46 && p1.firstChild == p1.lastChild && p1.firstChild.nodeType == 1) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
}
if (p1 == p2 && p1.nodeType == 3 && range.startOffset == range.endOffset && !Sys.Extended.UI.HTMLEditor.isOpera) {
var data = p1.data + "";
if (ev.keyCode == 46) {
if (range.startOffset == data.length && !(p1.nextSibling && p1.nextSibling.nodeType == 3)) {
if (p1.nextSibling) {
p1.parentNode.removeChild(p1.nextSibling);
editor.onContentChanged();
}
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
if (ev.keyCode == Sys.UI.Key.backspace) {
if (range.startOffset == 0 && !(p1.previousSibling && p1.previousSibling.nodeType == 3)) {
if (p1.previousSibling) {
p1.parentNode.removeChild(p1.previousSibling);
editor.onContentChanged();
}
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
}
if (ev.keyCode == Sys.UI.Key.backspace && p1.nodeType == 1 && p1 == p2 && range.startOffset == range.endOffset) {
var mel = p1.childNodes.item(range.startOffset);
if (mel != null && mel.nodeType == 1 && mel.tagName.toUpperCase() == "BR") {
mel = mel.previousSibling;
if (mel != null && mel.nodeType != 3) {
mel.parentNode.removeChild(mel);
editor.onContentChanged();
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
}
}
setTimeout(function() {
var sel = editor._getSelection();
var range = editor._createRange(sel);
var p1 = range.startContainer;
var p2 = range.endContainer;
if (Sys.Extended.UI.HTMLEditor.contentEditable(p1) != null || Sys.Extended.UI.HTMLEditor.contentEditable(p2) != null) {
editor._undo(false);
return;
}
if (Sys.Extended.UI.HTMLEditor.isOpera && p1 == p2 && p1.nodeType == 3 && (p1.data).length == 0) {
p1.parentNode.removeChild(p1);
}
else
if (p1 == p2 && p1.nodeType == 1 && Sys.Extended.UI.HTMLEditor.isStyleTag(p1.tagName) && range.startOffset == range.endOffset && p1.childNodes.length == 0) {
while (p1.parentNode.nodeType == 1 && Sys.Extended.UI.HTMLEditor.isStyleTag(p1.parentNode.tagName) && p1.parentNode.childNodes.length == 1) {
p1 = p1.parentNode;
}
var next = p1.nextSibling;
var prev = p1.previousSibling;
var parent = p1.parentNode;
parent.removeChild(p1);
editor.onContentChanged();
if (next == null && prev == null) {
range.setStart(parent, 0);
range.setEnd(parent, 0);
}
else
if (next != null && prev != null) {
if (next.nodeType == 3 && prev.nodeType == 3) {
var l = ("" + prev.data + "").length;
prev.appendData(next.data);
parent.removeChild(next);
range.setStart(prev, l);
range.setEnd(prev, l);
} else {
if (prev.nodeType == 3) {
var l = ("" + prev.data + "").length;
range.setStart(prev, l);
range.setEnd(prev, l);
} else {
if (next.nodeType == 3) {
range.setStart(next, 0);
range.setEnd(next, 0);
} else {
if (next.childNodes.length > 0) {
range.setStart(next, 0);
range.setEnd(next, 0);
} else {
var l = Sys.Extended.UI.HTMLEditor.__getIndex(next);
range.setStart(parent, l);
range.setEnd(parent, l);
}
}
}
}
} else {
if (prev != null) {
if (prev.nodeType == 3) {
var l = ("" + prev.data + "").length;
range.setStart(prev, l);
range.setEnd(prev, l);
} else {
var l = prev.childNodes.length;
if (l > 0) {
range.setStart(prev, l);
range.setEnd(prev, l);
} else {
l = Sys.Extended.UI.HTMLEditor.__getIndex(prev);
range.setStart(parent, l);
range.setEnd(parent, l);
}
}
} else {
if (next != null) {
if (next.nodeType == 3) {
range.setStart(next, 0);
range.setEnd(next, 0);
} else {
var l = next.childNodes.length;
if (l > 0) {
range.setStart(next, l);
range.setEnd(next, l);
} else {
l = Sys.Extended.UI.HTMLEditor.__getIndex(next);
range.setStart(parent, l);
range.setEnd(parent, l);
}
}
}
}
}
editor._removeAllRanges(sel);
editor._selectRange(sel, range);
}
}, 0);
}
else { // IE
var sel = editor._getSelection();
if (sel.type.toLowerCase() == "control") {
if (ev.keyCode == 8) {
setTimeout(function() {
editor._ifShadow();
editor.onContentChanged();
}, 0);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return;
}
var r = editor._createRange(sel);
var eln = r.item(0);
if (eln.tagName.toUpperCase() == "EMBED") {
eln.src = "";
eln.parentNode.removeChild(eln);
while (r.length > 0) {
r.remove(0);
}
try {
r.collapse(false);
} catch (e) { }
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
editor._saveContent();
setTimeout(function() {
editor._undo(false);
editor.onContentChanged();
}, 0);
return;
}
}
var tempCollectionLength = editor._doc.body.getElementsByTagName("EMBED").length;
if (tempCollectionLength > 0) {
var popup = editor._body.ownerDocument.createElement("div");
editor._body.appendChild(popup);
var evKeyCode = ev.keyCode;
setTimeout(function() {
editor._body.removeChild(popup);
var tempCollectionNew = editor._doc.body.getElementsByTagName("EMBED");
if (tempCollectionLength != tempCollectionNew.length) {
editor._saveContent();
setTimeout(function() {
editor._undo(false);
editor.onContentChanged();
}, 0);
}
}, 0);
}
setTimeout(function() {
editor._clearP();
}, 0);
}
break;
case Sys.UI.Key.enter:
if ((Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera) && ev.type == "keydown") break;
if ((!Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress") || (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown")) {
this._saveContent();
}
if (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keydown") {
var sel = editor._getSelection();
if (sel.type.toLowerCase() == "control")
break;
var r = editor._createRange(sel);
if (!ev.shiftKey) {
var prnt = r.parentElement();
if (prnt.tagName.toUpperCase() == "TEXTAREA") {
break;
}
while (prnt && prnt.tagName && prnt.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(prnt.tagName)) {
prnt = prnt.parentNode;
}
if (prnt && prnt.tagName) {
var tagName = prnt.tagName.toUpperCase();
if (tagName == "P" || tagName == "LI") {
if (tagName == "LI") {
function test() {
r = editor._createRange(editor._getSelection());
var parent = r.parentElement();
while (parent && parent.tagName && parent.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(parent.tagName)) {
parent = parent.parentNode;
}
if (parent && parent.nodeType == 1 && parent.tagName.toUpperCase() == "P") {
var span1 = editor._doc.createElement("span");
var tempText = editor._doc.createTextNode(" ");
var inner = parent;
while (inner.firstChild != null && inner.firstChild.nodeType == 1) {
inner = inner.firstChild;
}
if (inner.nodeType == 1) {
inner.appendChild(tempText);
inner.appendChild(span1);
while (parent.firstChild) {
parent.parentNode.insertBefore(parent.firstChild, parent);
}
} else {
parent.parentNode.insertBefore(tempText, parent);
parent.parentNode.insertBefore(span1, parent);
}
parent.parentNode.removeChild(parent);
r.moveToElementText(span1);
r.select();
span1.parentNode.removeChild(span1);
editor.onContentChanged();
}
}
setTimeout(test, 0);
}
break;
}
}
try {
var mn = Sys.Extended.UI.HTMLEditor.smartClassName + "_middle_add";
var mn_element = null;
var mn_span_text = "";
function testNextBlockElement() {
var sel = editor._getSelection();
var range = editor._createRange(sel);
if (mn_element != null) {
mn_element.innerHTML = " ";
range.moveToElementText(mn_element);
range.select();
mn_element.parentNode.insertBefore(mn_element.firstChild, mn_element);
mn_element.parentNode.removeChild(mn_element);
editor.onContentChanged();
}
}
r.pasteHTML(mn_span_text);
var needTest = false;
mn_element = editor._doc.getElementById(mn);
if (mn_element != null) {
var nextSibling = mn_element.nextSibling;
var curPar = mn_element.parentNode;
while (nextSibling == null && curPar != null && Sys.Extended.UI.HTMLEditor.isStyleTag(curPar.tagName)) {
nextSibling = curPar.nextSibling;
curPar = curPar.parentNode;
}
if (nextSibling != null && !Sys.Extended.UI.HTMLEditor.isInlineElement(nextSibling) && nextSibling.tagName != null && typeof nextSibling.tagName != "undefined") {
var tag = nextSibling.tagName.toUpperCase();
if (tag != "BR" && tag != "UL" && tag != "OL" && tag != "P") {
needTest = true;
}
}
mn_element.parentNode.removeChild(mn_element);
}
r.pasteHTML("
" + (needTest ? mn_span_text : ""));
if (needTest) {
mn_element = editor._doc.getElementById(mn);
}
r.select();
if (needTest) {
setTimeout(testNextBlockElement, 0);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
} catch (ex) { }
} else {
break;
}
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
} else {
if (!ev.shiftKey && (Sys.Extended.UI.HTMLEditor.isSafari || Sys.Extended.UI.HTMLEditor.isOpera)) {
var prnt = Sys.Extended.UI.HTMLEditor.getSelParent(this);
if (prnt.nodeType == 3) {
prnt = prnt.parentNode;
}
while (prnt && prnt.tagName && prnt.tagName.toUpperCase() != "BODY" && Sys.Extended.UI.HTMLEditor.isStyleTag(prnt.tagName)) {
prnt = prnt.parentNode;
}
if (prnt && prnt.tagName && (prnt.tagName.toUpperCase() == "P" || prnt.tagName.toUpperCase() == "LI")) {
break;
}
var mn_span_text = "
";
if (Sys.Extended.UI.HTMLEditor.isOpera) {
var sel = editor._getSelection();
var range = editor._createRange(sel);
if (range.startContainer == range.endContainer) {
if (range.startContainer.nodeType == 1) {
var firstCh = range.startContainer.childNodes.item(range.startOffset);
if (firstCh.nodeType == 1 && firstCh.tagName.toUpperCase() == "BR") {
mn_span_text += "
";
}
} else if (range.startContainer.nodeType == 3 && range.startOffset == range.endOffset && (range.startContainer.data).length == range.endOffset && !(range.startContainer.nextSibling && range.startContainer.nextSibling.nodeType == 3)) {
mn_span_text += " ";
}
}
}
this.insertHTML(mn_span_text);
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
if (Sys.Extended.UI.HTMLEditor.isOpera) {
var sel = editor._getSelection();
var range = editor._createRange(sel);
if (range.startContainer == range.endContainer && range.startContainer.nodeType == 3 && range.startOffset == range.endOffset && (range.startContainer.data).length == 0) {
var nbsp = range.startContainer.previousSibling;
range.startContainer.parentNode.removeChild(range.startContainer);
editor._removeAllRanges(sel);
range = editor._createRange();
range.setStart(nbsp, 0);
range.setEnd(nbsp, 1);
editor._selectRange(sel, range);
}
}
editor.onContentChanged();
} else if (Sys.Extended.UI.HTMLEditor.isSafari) {
this.insertHTML("
");
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
editor.onContentChanged();
}
}
break;
}
}
else {
editor._a_prize = false;
}
}
if (Sys.Extended.UI.HTMLEditor.isIE && ev.type == "keypress" && !ev.ctrlKey) {
var key = ev.keyCode;
var selT = editor._getSelection();
var rangeT = editor._createRange(selT);
if (rangeT.text.length > 0) {
var chr = String.fromCharCode(key);
var caps = Sys.Extended.UI.HTMLEditor.capLock(ev);
var upper = (ev.shiftKey && !caps) || caps;
if (!upper) {
chr = chr.toLowerCase();
}
var tid = Sys.Extended.UI.HTMLEditor.smartClassName + "StyleForTyping";
var elT = editor._doc.getElementById(tid);
if (elT != null) {
chr = "" + chr + "";
elT.parentNode.removeChild(elT);
}
rangeT.pasteHTML(chr);
if (elT != null) {
editor.trickWithStyles(tid);
elT = editor._doc.getElementById(tid + tid);
elT.parentNode.removeChild(elT);
}
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
editor.onContentChanged();
return false;
}
}
if (ev.type == "mouseup" || ev.type == "mousedown" || ev.type == "keydown") {
var need_update = true;
if (ev.type == "keydown" && !ev.ctrlKey) {
var key = ev.keyCode;
if ((key >= 0x30 && key <= 0x5a) || (key == 0x20) || (key == 0x0d) || (key >= 0xba && key <= 0xde) || (key >= 0x60 && key <= 0x6f)) {
if (editor._StyleForTyping != null) {
editor.n_arr = [];
for (var im = 0; im < editor._StyleForTyping.length; im++) {
editor.n_arr.push(editor._StyleForTyping[im]);
}
var tid = Sys.Extended.UI.HTMLEditor.smartClassName + "StyleForTyping";
var needItNow = true;
if (!Sys.Extended.UI.HTMLEditor.isIE) {
editor.insertHTML("");
} else {
editor.insertHTML(" ");
var elT = editor._doc.getElementById(tid);
if (elT && elT.nextSibling && elT.nextSibling.nodeType == 3) {
needItNow = false;
var selT = editor._getSelection();
var rangeT = editor._createRange(selT);
rangeT.moveToElementText(editor._doc.getElementById(tid));
rangeT.select();
} else {
if (elT) {
elT.removeChild(elT.firstChild);
}
}
}
if (needItNow) {
setTimeout(function() {
editor.trickWithStyles(tid);
editor.onContentChanged();
}, 0);
}
}
}
}
if (need_update || !Sys.Extended.UI.HTMLEditor.isIE) {
if (!editor._updated_now) {
if (editor._updateTimer) {
clearTimeout(editor._updateTimer);
editor._updateTimer = null;
}
editor._updateTimerLimit = 3;
function xyz() {
if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
try {
if (Sys.Extended.UI.HTMLEditor.isIE) {
try {
var selka = editor._doc.selection;
} catch (e) {
return false;
}
if (editor._getSelection().type == "None" && editor._doc.queryCommandValue("backcolor") == 0 && editor._doc.queryCommandValue("forecolor") == 0) {
editor._updateTimerLimit--;
if (editor._updateTimerLimit > 0) {
editor._updateTimer = setTimeout(xyz, 100); // delay for toolbars updating
return;
}
}
}
editor._updated_now = true;
editor._editPanel.updateToolbar();
editor._updated_now = false;
editor._updateTimer = null;
if (!Sys.Extended.UI.HTMLEditor.isIE) {
editor.focusEditor();
}
} catch (e) { }
}
}
editor._updateTimer = setTimeout(xyz, 300); // delay for toolbars updating
}
}
}
if (!((!Sys.Extended.UI.HTMLEditor.isIE && (ev.type == "keydown" || ev.type == "keyup")) || (Sys.Extended.UI.HTMLEditor.isIE && (ev.type == "keydown" || ev.type == "keyup") && (ev.keyCode == 16 || ev.keyCode == 20)))) {
editor._StyleForTyping = null;
}
if (Sys.Extended.UI.HTMLEditor.isSafari) {
setTimeout(function() {
editor._createRange(editor._getSelection());
}, 0);
}
if (!Sys.Extended.UI.HTMLEditor.isIE) {
setTimeout(function() {
if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
var sel = editor._getSelection();
var range = editor._createRange(sel);
if (range.startContainer.nodeType != 3 && range.startContainer == range.endContainer)
if (range.startOffset == range.endOffset)
if (range.startContainer.childNodes.item(range.startOffset))
if (range.startContainer.childNodes.item(range.startOffset).nodeType == 3) {
var container = range.startContainer.childNodes.item(range.startOffset);
sel.collapseToEnd();
editor._removeAllRanges(sel);
sel = editor._getSelection();
range = editor._createRange(sel);
range.setStart(container, 0);
range.setEnd(container, 0);
editor._selectRange(sel, range);
}
}
}, 0);
}
if (!Sys.Extended.UI.HTMLEditor.isIE) {
var sel = editor._getSelection();
var range = editor._createRange(sel);
editor._saved_startContainer = range.startContainer;
editor._saved_startOffset = range.startOffset;
}
setTimeout(function() {
try {
if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
editor._ifShadow();
}
} catch (e) { }
}, 0);
if (ev.type == "keydown") {
if (editor._AfterOnContentChanged == null || typeof editor._AfterOnContentChanged == "undefined" || !editor._AfterOnContentChanged) {
editor._AfterOnContentChanged = true;
setTimeout(function() {
if (editor._editPanel == Sys.Extended.UI.HTMLEditor.LastFocusedEditPanel) {
editor.onContentChanged();
editor._AfterOnContentChanged = false;
}
}, 0);
}
}
return true;
} catch (ex) {
Sys.Extended.UI.HTMLEditor._stopEvent(ev);
return false;
}
};